#pragma once

#include "Config.h"
#include "DBStream.h"

namespace db
{

typedef enum _RECORDTYPE {
    RTP_NONE = 0,
    RTP_STRING,
    RTP_BOOL,
    RTP_INT,
    RTP_FLOAT,
    RTP_DOUBLE,
    RTP_DATA,
    // just for enumerate
    RTP_COUNT
} ERecordType;

class Container 
{
private:

public:
    virtual void Load(ReadStream& file) = 0; 
    virtual void Save(WriteStream& file) const = 0; 
public:
    virtual ERecordType GetType() const = 0;

    virtual std::wstring GetAsString() const = 0;
    virtual bool GetAsBool() const = 0;
    virtual u32 GetAsInt() const = 0;
    virtual f32 GetAsFloat() const = 0;
    virtual f64 GetAsDouble() const = 0;

	virtual u32 GetDataSize() const = 0;
	virtual const void* GetAsData() const = 0;
};

};